home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / hotkey / AutoHotkey104504_Install.exe / AutoHotkey.chm / docs / scripts / tooltipmousemenu.ahk < prev    next >
Text File  |  2006-11-15  |  3KB  |  165 lines

  1. ; ToolTip Mouse Menu (requires XP/2k/NT) -- by Rajat
  2. ; http://www.autohotkey.com
  3. ; This script displays a popup menu in response to briefly holding down
  4. ; the middle mouse button.  Select a menu item by left-clicking it.
  5. ; Cancel the menu by left-clicking outside of it.  A recent improvement
  6. ; is that the contents of the menu can change depending on which type of
  7. ; window is active (Notepad and Word are used as examples here).
  8.  
  9. ; You can set any title here for the menu:
  10. MenuTitle = -=-=-=-=-=-=-=-
  11.  
  12. ; This is how long the mouse button must be held to cause the menu to appear:
  13. UMDelay = 20
  14.  
  15. SetFormat, float, 0.0
  16. SetBatchLines, 10ms 
  17. SetTitleMatchMode, 2
  18. #SingleInstance
  19.  
  20.  
  21. ;___________________________________________
  22. ;_____Menu Definitions______________________
  23.  
  24. ; Create / Edit Menu Items here.
  25. ; You can't use spaces in keys/values/section names.
  26.  
  27. ; Don't worry about the order, the menu will be sorted.
  28.  
  29. MenuItems = Notepad/Calculator/Section 3/Section 4/Section 5
  30.  
  31.  
  32. ;___________________________________________
  33. ;______Dynamic menuitems here_______________
  34.  
  35. ; Syntax:
  36. ;     Dyn# = MenuItem|Window title
  37.  
  38. Dyn1 = MS Word|- Microsoft Word
  39. Dyn2 = Notepad II|- Notepad
  40.  
  41. ;___________________________________________
  42.  
  43. Exit
  44.  
  45.  
  46. ;___________________________________________
  47. ;_____Menu Sections_________________________
  48.  
  49. ; Create / Edit Menu Sections here.
  50.  
  51. Notepad:
  52. Run, Notepad.exe
  53. Return
  54.  
  55. Calculator:
  56. Run, Calc
  57. Return
  58.  
  59. Section3:
  60. MsgBox, You selected 3
  61. Return
  62.  
  63. Section4:
  64. MsgBox, You selected 4
  65. Return
  66.  
  67. Section5:
  68. MsgBox, You selected 5
  69. Return
  70.  
  71. MSWord:
  72. msgbox, this is a dynamic entry (word)
  73. Return
  74.  
  75. NotepadII:
  76. msgbox, this is a dynamic entry (notepad)
  77. Return
  78.  
  79.  
  80. ;___________________________________________
  81. ;_____Hotkey Section________________________
  82.  
  83. ~MButton::
  84. HowLong = 0
  85. Loop
  86. {
  87.     HowLong ++
  88.     Sleep, 10
  89.     GetKeyState, MButton, MButton, P
  90.     IfEqual, MButton, U, Break
  91. }
  92. IfLess, HowLong, %UMDelay%, Return
  93.  
  94.  
  95. ;prepares dynamic menu
  96. DynMenu =
  97. Loop
  98. {
  99.     IfEqual, Dyn%a_index%,, Break
  100.  
  101.     StringGetPos, ppos, dyn%a_index%, |
  102.     StringLeft, item, dyn%a_index%, %ppos%
  103.     ppos += 2
  104.     StringMid, win, dyn%a_index%, %ppos%, 1000
  105.  
  106.     IfWinActive, %win%,
  107.         DynMenu = %DynMenu%/%item%
  108. }
  109.  
  110.  
  111. ;Joins sorted main menu and dynamic menu
  112. Sort, MenuItems, D/
  113. TempMenu = %MenuItems%%DynMenu%
  114.  
  115.  
  116. ;clears earlier entries
  117. Loop
  118. {
  119.     IfEqual, MenuItem%a_index%,, Break
  120.     MenuItem%a_index% =
  121. }
  122.  
  123. ;creates new entries
  124. Loop, Parse, TempMenu, /
  125. {
  126.     MenuItem%a_index% = %a_loopfield%
  127. }
  128.  
  129. ;creates the menu
  130. Menu = %MenuTitle%
  131. Loop
  132. {
  133.     IfEqual, MenuItem%a_index%,, Break
  134.     numItems ++
  135.     StringTrimLeft, MenuText, MenuItem%a_index%, 0
  136.     Menu = %Menu%`n%MenuText%
  137. }
  138.  
  139. MouseGetPos, mX, mY
  140. HotKey, ~LButton, MenuClick
  141. HotKey, ~LButton, On
  142. ToolTip, %Menu%, %mX%, %mY%
  143. WinActivate, %MenuTitle%
  144. Return
  145.  
  146.  
  147. MenuClick:
  148. HotKey, ~LButton, Off
  149. IfWinNotActive, %MenuTitle%
  150. {
  151.     ToolTip
  152.     Return
  153. }
  154.  
  155. MouseGetPos, mX, mY
  156. ToolTip
  157. mY -= 3        ;space after which first line starts
  158. mY /= 13    ;space taken by each line
  159. IfLess, mY, 1, Return
  160. IfGreater, mY, %numItems%, Return
  161. StringTrimLeft, TargetSection, MenuItem%mY%, 0
  162. StringReplace, TargetSection, TargetSection, %a_space%,, A
  163. Gosub, %TargetSection%
  164. Return
  165.